<template>
	<view class="meiyan">
		<view class="top" @click="onAddImgClick">
			<view class="top_mid" v-if="muban_url">
				<image :src="muban_url" mode="aspectFit" class="imuban" style="height: 869rpx;"></image>
			</view>
			<view class="top_mid" v-else style="height: 657rpx;">				
				<uni-icons class="ii"  color="#9d9d9d" type="plusempty" size="30"></uni-icons>
				<text class="tt">上传模板图片</text>
			</view>
		</view>
		<button class="btn" @click="startBianLian" :loading="loadding"
			:disabled="loadding">开始换脸</button>
		<text v-if="price" class="t_price">{{price}}</text>
		<view class="tip">
			<text class="t1">温馨提示</text>
			<text class="t2">
				1、您在使用本服务时，应当遵守相关法律法规的要求以及本平台的相关服务协议，不得将本服务用于非法目的，不得利用本服务从事违法法律法规或侵犯他人合法权益的行为
				您在使用本服务时，应当确保您自身或者您应用的用户使用、上传、发布的照片、素材等信息内容，已取得相关权利人的合法授权，不存在侵犯他人肖像权、版权等合法权益的情形，亦不存在违反相关法律、法规、政策的规定以及公序良俗等情形。
				您自行对您应用中由用户使用本服务产生的内容负责，保证其不违法相关法律、法规、政策的规定以及公序良俗等。
				您违法上述要求引发的任何纠纷由您自行负责，与本平台无关。本平台有权立即停止您在本平台中的一切服务并保留追究您法律责任的权利
			</text>
		</view>
	</view>
</template>

<script>
	import {
		getUser,
		getAbilityPrice
	} from '@/src/utils/utils.js';
	import {
		ImageStyle
	} from '@/src/api/huanlian.js';
	import {
		upload_file
	} from '@/src/utils/uni-fetch.js';

	export default {
		data() {
			return {
				muban_url: null,
				muban_id: null,
				loadding: false,
				price: null,
				req_key:null,
				sub_req_key:null
			}
		},
		onLoad(options) {
			this.req_key = options.req_key
			this.sub_req_key = options.sub_req_key
			this.init_price()
		},
		methods: {
			async init_price() {
				try {
					this.price = await getAbilityPrice('ImageStyle')
				} catch (e) {
					console.log(e)
				}
			},
			async onAddImgClick() {
				
				// const [error, res] = await uni.chooseImage({
				// 	count: 1,
				// 	sizeType: ['compressed','original'],
				// 	sourceType: ['album', 'camera'] //从相册选择
				// });
				// if (error) {
				// 	if (error.errCode == -2 || error.errCode == 0) return;
				// 	uni.showModal({
				// 		title: '选取图片失败',
				// 		content: error.errMsg,
				// 		showCancel: false
				// 	});
				// 	return;
				// }
				
				
				// 正确解构方式（需配合try-catch）
				try {
				  const { tempFilePaths, tempFiles, errMsg } = await uni.chooseImage({
				    count: 1,
				    sizeType: ['compressed', 'original'],
				    sourceType: ['album', 'camera']
				  });
				  
				  if(error !== 'chooseImage:ok') {
					if (error.errCode == -2 || error.errCode == 0) return;
					   uni.showModal({
						title: '选取图片失败',
						content: error.errMsg,
						showCancel: false
					   });
					   return;
					}
					let result = await upload_file({
						url: '/huanlian/up_image/',
						file: {
							name: 'image',
							uri: tempFilePaths[0]
						},
						formData: {
							img_type: 1
						}
					});
					this.muban_id = result.data.id;
					this.muban_url = tempFilePaths[0];
				  
				} catch (error) {
				  console.error('选择图片失败：', error)
				  uni.showModal({
				  	title: '上传图片失败',
				  	content:error,
				  	//content:'上传图片失败',
				  	showCancel: false,
				  });
				}

				
				// try {
					
				// } catch (e) {
				// 	if (!e) return
				// 	uni.showModal({
				// 		content: e.errMsg || e.message,
				// 		showCancel: false
				// 	});
				// }
			},
			async startBianLian() {
				if (!this.muban_id) {
					this.$showToast('请上传图片');
					return;
				}
				try {
					this.loadding = true
					let result = await ImageStyle({
						req_key:this.req_key,
						sub_req_key:this.sub_req_key,
						template_id:this.muban_id
					});
					getUser({}, true);
					uni.hideLoading();
					uni.navigateTo({
						url: `/src/pages/Ability/Result/Result?result_img=${encodeURIComponent(result.data)}&tip=${result.data.tip}`
					});
				} catch (e) {
					if (!e) return
					uni.showModal({
						content: e.errMsg || e.message,
						showCancel: false
					});
				} finally {
					this.loadding = false
				}
			}
		}
	}
</script>

<style lang="scss">
	@import "ImageStyle.scss";
</style>